diff --git a/board/trab/cmd_trab.c b/board/trab/cmd_trab.c
index 794c527..00eb385 100644
--- a/board/trab/cmd_trab.c
+++ b/board/trab/cmd_trab.c
@@ -26,6 +26,7 @@
 #include <common.h>
 #include <command.h>
 #include <s3c2400.h>
+#include <rtc.h>
 
 /*
  * TRAB board specific commands. Especially commands for burn-in and function
@@ -117,6 +118,7 @@
 			uchar *buffer, int len);
 int i2c_read_multiple (uchar chip, uint addr, int alen,
 			uchar *buffer, int len);
+int do_temp_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 /* helper functions */
 static void adc_init (void);
@@ -173,6 +175,7 @@
 	led_init ();
 	global_vars_init ();
 	test_function_table_init ();
+	spi_init ();
 
 	if (global_vars_write_to_eeprom () != 0) {
 		printf ("%s: error writing global_vars to eeprom\n",
@@ -334,7 +337,6 @@
 	}
 
 	spi_init ();
-	tsc2000_reg_init ();
 
 	contact_temp = tsc2000_contact_temp();
 	printf ("%d degree C * 100\n", contact_temp) ;
@@ -577,7 +579,6 @@
 {
 	int contact_temp;
 
-	spi_init ();
 	contact_temp = tsc2000_contact_temp ();
 
 	if ((contact_temp < MIN_CONTACT_TEMP)
@@ -840,4 +841,55 @@
 	return (0);
 }
 
+int do_temp_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+	int contact_temp;
+	int delay = 0;
+#if (CONFIG_COMMANDS & CFG_CMD_DATE)
+	struct rtc_time tm;
+#endif
+
+	if (argc > 2) {
+		printf ("Usage:\n%s\n", cmdtp->usage);
+		return 1;
+	}
+
+	if (argc > 1) {
+		delay = simple_strtoul(argv[1], NULL, 10);
+	}
+
+	spi_init ();
+	while (1) {
+
+#if (CONFIG_COMMANDS & CFG_CMD_DATE)
+		rtc_get (&tm);
+		printf ("%4d-%02d-%02d %2d:%02d:%02d - ",
+			tm.tm_year, tm.tm_mon, tm.tm_mday,
+			tm.tm_hour, tm.tm_min, tm.tm_sec);
+#endif
+
+		contact_temp = tsc2000_contact_temp();
+		printf ("%d\n", contact_temp) ;
+
+		if (delay != 0)
+			/*
+			 * reset timer to avoid timestamp overflow problem
+			 * after about 68 minutes of udelay() time.
+			 */
+			reset_timer_masked ();
+			sdelay (delay);
+	}
+
+	return 0;
+}
+
+U_BOOT_CMD(
+	tlog,	2,	1,	do_temp_log,
+	"tlog    - log contact temperature [1/100 C] to console (endlessly)\n",
+	"delay\n"
+	"    - contact temperature [1/100 C] is printed endlessly to console\n"
+	"      <delay> specifies the seconds to wait between two measurements\n"
+	"      For each measurment a timestamp is printeted\n"
+);
+
 #endif	/* CFG_CMD_BSP */
